/*
 * @Description: 配置项预定义
 * @Author: HuiSir<https://gitee.com/huisir001>
 * @Date: 2025-08-01 16:56:07
 * @LastEditTime: 2025-09-18 17:52:40
 */
import { reactive } from "vue";
import { IPageToolsOptions, IPageRowBtnsOptions } from "./types";

/* eslint-disable @typescript-eslint/no-explicit-any */
/* 预定义均使用响应式数据，便于内置组件对配置项进行调整 */
/* 这里参考钩子函数方式使用高阶函数以便传入一些参数，又不会对作用域有所污染 */

export {
  defineTableCols,
  defineFormOptions,
  defineDetailOptions,
  defineListEditTableCols,
} from "@/ui";

/**
 * 预定义页面工具栏配置
 */
export const defineToolsOptions = (
  useToolsOptionsFn: (...args: any[]) => IPageToolsOptions
) => {
  // 这里再次套入函数，便于加装reactive
  return (...args: any[]) => {
    return reactive<IPageToolsOptions>(useToolsOptionsFn(...args));
  };
};

/**
 * 预定义页面（表格）行按钮配置
 */
export const defineRowBtnsOptions = (
  useRowBtnsOptionsFn: (...args: any[]) => IPageRowBtnsOptions
) => {
  // 这里再次套入函数，便于加装reactive
  return (...args: any[]) => {
    return reactive<IPageRowBtnsOptions>(useRowBtnsOptionsFn(...args));
  };
};
